Performance of a computer system depends on an ability of the computer system to store a required amount of data and provide access to the data in an efficient and timely manner. Different memories that may be incorporated into a computer have different characteristics that can impact performance. Progress in computer technologies has led to more types of computer memories that can be employed by a computer system. For example, in addition to volatile memory, such as DRAM, different non-volatile memories exist, such as NAND Flash, NOR Flash, PCM (phase-change memory) and others.
Various types of memories have different characteristics. For example, non-volatile memories such as Flash, which are typically used in memory cards (e.g., in mobile phones), USB flash drives, and solid-state drives, and memories such as PCM, are well suited for long term storage of information since they may not require power to maintain their contents. However, these memories have an expensive write operation, in terms of latency and power consumed, and a limited lifetime, meaning that such memories can endure only a limited number of write cycles. As another example, DRAM may have a very long lifetime and may consume power in order to retain data.